//工具js
window.emaJgl={};
//date: 2016-11-16 author: 杜关兴 note:必填正则验证工具 other：（失去焦点和点击提交显示提示）
/*
	elelist:json配置（包含输入框id，提示容器id，数组形式的正则与提示文字）
*/
emaJgl.blurValidate=function(elelist){	
	var errlen=0;//错误个数
	var errlist=[];//错误输入框ID
	for(var i=0;i<elelist.length;i++){	//失去焦点操作
		(function(eleinput,eletext,rule){
			document.getElementById(eleinput).onblur=function(){
				var intval=this.value.replace(/(^\s*)|(\s*$)/g, "");//删除前后空格
				for(var j=0;j<rule.length;j++){	
					var resreg=rule[j].reg.test(intval);					
					if(resreg){						
						document.getElementById(eletext).style.display="none";
					}else{					
						document.getElementById(eletext).innerHTML=rule[j].text;
						document.getElementById(eletext).style.display="block";
						break;//终止循环			
					};									
				};		
			};
		})(elelist[i].eleinput,elelist[i].eletext,elelist[i].rule);
	};	
};
//date: 2016-11-16 author: 杜关兴 note:必填正则验证工具 other：（失去焦点和点击提交显示提示）
/*
	elelist:json配置（包含输入框id，提示容器id，数组形式的正则与提示文字）
	funsubmit：成功回调
	funerr：失败回调函数
	funerrlist：失败错误输入框ID回调函数
*/
emaJgl.submitValidate=function(elelist,objs){		
	errlen=0;
	errlist=[];
	for(var i=0;i<elelist.length;i++){	
		(function(eleinput,eletext,rule){
			var intval=document.getElementById(eleinput).value.replace(/(^\s*)|(\s*$)/g, "");//删除前后空格
			for(var j=0;j<rule.length;j++){	
				var resreg=rule[j].reg.test(intval);					
				if(resreg){						
					document.getElementById(eletext).style.display="none";
				}else{					
					document.getElementById(eletext).innerHTML=rule[j].text;
					document.getElementById(eletext).style.display="block";
					errlen+=1;
					errlist.push(eleinput);
					break;			
				};									
			};		
		})(elelist[i].eleinput,elelist[i].eletext,elelist[i].rule);
	};
	if(errlen==0){//验证回调
		objs.funsubmit();//成功
	}else{
		objs.funerr();//失败
		objs.funerrlist(errlist);//失败输入框元素id
	};
};
//date: 2016-11-16 author: 杜关兴 note:图片base64位整理
/*
	url:生成的图片base64路径进一步处理
*/
emaJgl.toBase64sub=function(url){
	var startindex=url.indexOf(",");
	return url.substr(startindex+1);
};
//date: 2016-11-17 author: 杜关兴 note: 图片base64 支持监测  other：（ie10 ie10+ 谷歌 火狐 safari主流浏览器）
/*
	text:是否支持的错误提示文字
*/
emaJgl.supportBase64IMG=function(text){
	if(!window.FileReader){
		alert(text);
	};
};
//date: 2016-12-5 author: 杜关兴 note: 图片比例缩放算法
/*
	boxw:容器宽度
	boxh:容器高度
	imgw:图片宽度
	imgh:图片高度
*/
emaJgl.imgPercentScale=function(boxw,boxh,imgw,imgh){
	var res={};
	var wper=imgw/boxw;
	var hper=imgh/boxh;
	if(wper<=1 && hper<1){
		res.w=imgw;
		res.h=imgh;
		return res;
	};
	if(wper>1 && hper<1){
		res.w=boxw;
		var rhper=boxw/imgw;
		res.h=imgh*rhper;
		return res;
	};
	if(wper<=1 && hper>1){
		res.h=boxh;
		var rwper=boxh/imgh;
		res.w=imgw*rwper;
		return res;
	};
	if(wper>1 && hper>1){
		if(wper>=hper){
			res.w=boxw;
			var rhper=boxw/imgw;
			res.h=imgh*rhper;
			return res;
		}else{
			res.h=boxh;
			var rwper=boxh/imgh;
			res.w=imgw*rwper;
			return res;
		};
	};	
};
//date: 2016-12-7 author: 杜关兴 note: 数字格式化 other：（如1457841 转为：1,457,841;如1457841.1245 转为：1,457,841.1245）
/*
	str :格式化内容
*/
emaJgl.formatNum=function(str){
	var newStr = "";
	var count = 0;
	if(str.indexOf(".")==-1){
		for(var i=str.length-1;i>=0;i--){
			if(count % 3 == 0 && count != 0){
				newStr = str.charAt(i) + "," + newStr;
			}else{
				newStr = str.charAt(i) + newStr;
			};
			count++;
		};
		str = newStr;
		return str;
	}else{
		for(var i = str.indexOf(".")-1;i>=0;i--){
			if(count % 3 == 0 && count != 0){
				newStr = str.charAt(i) + "," + newStr;
			}else{
				newStr = str.charAt(i) + newStr; //逐个字符相接起来
			};
			count++;
		};
		var xslen=str.substr(str.indexOf(".")+1).length;
		str = newStr + (str + "00").substr((str + "00").indexOf("."),xslen+1);
		return str;
	};
};
//date: 2016-12-7 author: 杜关兴 note: 数字格式化,保留后两位 other：（如1457841 转为：1,457,841.00;如1457841.1245 转为：1,457,841.12）
/*
	str :格式化内容
*/
emaJgl.formatNumTwo=function(str){
	var newStr = "";
	var count = 0;	 
	if(str.indexOf(".")==-1){
		for(var i=str.length-1;i>=0;i--){
			if(count % 3 == 0 && count != 0){
				newStr = str.charAt(i) + "," + newStr;
			}else{
				newStr = str.charAt(i) + newStr;
			};
			count++;
		};
		str = newStr + ".00"; //自动补小数点后两位
		return str;
	}else{
		for(var i = str.indexOf(".")-1;i>=0;i--){
			if(count % 3 == 0 && count != 0){
				newStr = str.charAt(i) + "," + newStr;
			}else{
				newStr = str.charAt(i) + newStr; //逐个字符相接起来
			};
			count++;
		};
		str = newStr + (str + "00").substr((str + "00").indexOf("."),3);
		return str;
	};
};
//date: 2016-12-7 author: 杜关兴 note: 数字类型判断
/*
	str :判断内容
*/
emaJgl.isNum=function(str){
	var numstr=Number(str);
	if(isNaN(numstr)){
		return false;
	}else{
		return true;
	};
};
//date: 2016-12-7 author: 杜关兴 note: cookie处理封装
/*
	openJgl.cookieHandle.remove:删除cookie
	openJgl.cookieHandle.edit  :修改cookie
	openJgl.cookieHandle.get   :获取cookie
*/
emaJgl.cookieHandle={}
emaJgl.cookieHandle.remove=function(name){
	var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=openJgl.cookieHandle.get(name);
    if(cval!=null){
		document.cookie= name + "="+cval+";expires="+exp.toUTCString(); 
	};       
};
emaJgl.cookieHandle.edit=function(jsons,day){
	var cookval="";
	for(var i=0;i<jsons.length;i++){
		if(i==0){
			var tempval=jsons[i].key + "=" + escape(jsons[i].val);
			cookval=cookval + tempval;
		}else{
			var tempval=";" + jsons[i].key + "=" + escape(jsons[i].val);
			cookval=cookval + tempval;
		};
	};
	var exp = new Date();
	exp.setTime(exp.getTime() + day*24*60*60*1000);
	cookval=cookval + ";expires=" + exp.toUTCString();
	document.cookie=cookval;	
};
emaJgl.cookieHandle.get=function(name){
	var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
	if(arr=document.cookie.match(reg)){
		return unescape(arr[2]);
	}else{
		return null;
	};	
};
//date: 2016-12-22 author: 杜关兴 note:邮箱补全提示
/*
	inputid:输入框id
	selectsuccess:选择值后的事件回调
	regpass:符合邮箱格式回调
	regerr:不符合邮箱格式回调
	emaJgl.tbdAutoEmailMap  :邮箱补全列表配置文件
	emaJgl.TbdAutoEmail.keydownevent  :利用键盘选取赋值成功 调用的额外回调 会返回操作输入框id
*/
emaJgl.tbdAutoEmailMap=["qq.com","163.com","126.com","sina.com","hotmail.com","yahoo.com","sohu.com","yahoo.cn","gmail.com","tom.com"];
emaJgl.TbdAutoEmail=function(opts){
	this.inputid=opts.inputid;
	this.selectsuccess=opts.selectsuccess;
	this.regpass=opts.regpass;
	this.regerr=opts.regerr;
	this.emailList=emaJgl.tbdAutoEmailMap  //邮箱补全列表
	this.eleinputid=document.getElementById(this.inputid);//输入框
	this.elebody=document.getElementsByTagName("body")[0];//body元素	
	this.elebox=document.createElement("div");//选择列表根元素
	this.elebox.id=this.inputid+"_layer";
	this.elebox.className="emaillayer";
	this.elebody.appendChild(this.elebox);//body元素 插入 选择列表根元素
 	this.reg=/(^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$)|(^\w+$)|(^\w+((-\w+)|(\.\w+))*$)|(^\w+((-\w+)|(\.\w+))*\@$)|(^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+$)|(^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*$)|(^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.$)/;

	this.init=function(){
		this.addevent();
	};

	this.addevent=function(){
		var that=this;
		this.eleinputid.onkeyup=function(event){
			var ev=window.event || event;
			var target=ev.srcElement || ev.target;
			that.layer(this);
		};
		this.eleinputid.onfocus=function(){
			var alllist=document.getElementsByTagName("div");
			for(var i=0;i<alllist.length;i++){
				if(alllist[i].className=="emaillayer"){
					alllist[i].style.display="none";
				};							
			};
			that.layer(this);
		};
		this.eleinputid.onclick=function(event){
			var ev=window.event || event;
			var target=ev.srcElement || ev.target;
			if(ev.stopPropagation){
				ev.stopPropagation();	
			}else{
				ev.cancelBubble = true;
			};					
		};
		this.elebox.onclick=function(event){
			var ev=window.event || event;
			var target=ev.srcElement || ev.target;
			that.eleinputid.value=target.innerHTML;
			that.elebox.style.display="none";
			if(that.selectsuccess){
				that.selectsuccess();
			};	
			if(ev.stopPropagation){
				ev.stopPropagation();	
			}else{
				ev.cancelBubble = true;
			};		
		};
	};	
	this.layer=function(self){
		//输入框x y 宽 高
		var ix=self.getBoundingClientRect().left;
		var iy=self.getBoundingClientRect().top;
		var iw=self.offsetWidth;
		var ih=self.offsetHeight;
		//输入框值位置宽度设置
		this.elebox.style.left=ix+"px";
		this.elebox.style.top=(iy+ih-1)+"px";
		this.elebox.style.width=iw+"px";
		//获取输入框值
		var dval=self.value.replace(/(^\s*)|(\s*$)/g, "");
		//获取@之前的值	
		if(dval==""){
			this.elebox.style.display="none";
			return false;
		};
		if(!this.reg.test(dval)){
			this.elebox.style.display="none";
			if(this.regerr){
				this.regerr();
			};	
			return false;
		};
		if(this.regpass){
			this.regpass();
		};		
		dval=this.realval(dval);
		//形成选择列表 插入到 选择列表根元素
		this.elebox.innerHTML="";
		for(var i=0;i<this.emailList.length;i++){
			var item=document.createElement("div");//选择列表根元素
			item.className="emaillayer_list";
			if(i==0){
				item.className="emaillayer_list active";
			};
			item.innerHTML=dval+"@"+this.emailList[i];
			this.elebox.appendChild(item);
		};
		//显示
		this.elebox.style.display="block";
	};
	this.hidelayer=function(){
		this.elebox.style.display="none";
	};
	this.realval=function(dval){		
		var ri=dval.search("@");
		if(ri==-1){
			return dval;
		}else{
			return dval.substring(0,ri);
		};
	};
};
document.onclick=function(event){
	//页面点击 隐藏所有显示
	var alllist=document.getElementsByTagName("div");
	for(var i=0;i<alllist.length;i++){
		if(alllist[i].className=="emaillayer"){
			alllist[i].style.display="none";
		};							
	};
};
emaJgl.TbdAutoEmail.keydownevent=null;
document.onkeydown=function(event){
	//键盘赋值
	var ev=window.event || event;
	var keyc=ev.keyCode||ev.which||ev.charCode;	
	var alllist=document.getElementsByTagName("div");
	var showautoemail=null;
	for(var i=0;i<alllist.length;i++){
		if(alllist[i].className=="emaillayer"){
			if(alllist[i].style.display=="block"){
				showautoemail=alllist[i];
			};
		};							
	};	
	if(showautoemail){//显示的弹窗根元素
		var showautoemailid=showautoemail.id;
		var showinput=document.getElementById(showautoemailid.substring(0,showautoemailid.lastIndexOf("_")));//显示的弹窗根元素 对应的input		

		var ai=0;//active位置
		var childlist=showautoemail.getElementsByTagName("div");
		for(var i=0;i<childlist.length;i++){
			if(childlist[i].className.search("active")!=-1){
				ai=i;
			};
		};
		childlist[ai].className="emaillayer_list";
		if(keyc==38){//上		
			showinput.blur();//阻止和输入框keyup冲突
			if(ai==0){
				childlist[childlist.length-1].className="emaillayer_list active";
				showinput.value=childlist[childlist.length-1].innerHTML;
			}else{
				childlist[ai-1].className="emaillayer_list active";
				showinput.value=childlist[ai-1].innerHTML;
			};
			if(emaJgl.TbdAutoEmail.keydownevent){
				emaJgl.TbdAutoEmail.keydownevent(showinput.id);
			};	
			return false;//阻止页面滚动
		}else if(keyc==40){//下
			showinput.blur();//阻止和输入框keyup冲突
			if(ai==childlist.length-1){
				childlist[0].className="emaillayer_list active";
				showinput.value=childlist[0].innerHTML;
			}else{
				childlist[ai+1].className="emaillayer_list active";
				showinput.value=childlist[ai+1].innerHTML;
			};
			if(emaJgl.TbdAutoEmail.keydownevent){
				emaJgl.TbdAutoEmail.keydownevent(showinput.id);
			};			
			return false;
		}else if(keyc==13){//回车
			showinput.blur();//阻止和输入框keyup冲突
			showinput.value=childlist[ai].innerHTML;
			showautoemail.style.display="none";
			if(emaJgl.TbdAutoEmail.keydownevent){
				emaJgl.TbdAutoEmail.keydownevent(showinput.id);
			};	
		};
	};	
};
emaJgl.TbdAutoEmail.setposition=function(){
	//位置社会资
	var alllist=document.getElementsByTagName("div");
	var showautoemail=null;
	for(var i=0;i<alllist.length;i++){
		if(alllist[i].className=="emaillayer"){
			if(alllist[i].style.display=="block"){
				showautoemail=alllist[i];
			};
		};							
	};	
	if(showautoemail){//显示的弹窗根元素
		var showautoemailid=showautoemail.id;
		var showinput=document.getElementById(showautoemailid.substring(0,showautoemailid.lastIndexOf("_")));//显示的弹窗根元素 对应的input
		//输入框x y 宽 高
		var ix=showinput.getBoundingClientRect().left;
		var iy=showinput.getBoundingClientRect().top;
		var iw=showinput.offsetWidth;
		var ih=showinput.offsetHeight;
		//输入框值位置宽度设置
		showautoemail.style.left=ix+"px";
		showautoemail.style.top=(iy+ih-1)+"px";
		showautoemail.style.width=iw+"px";
	};
};
window.onresize=function(){
	//窗口变化 重置位置
	emaJgl.TbdAutoEmail.setposition();
};
window.onscroll=function(){	
	//滚动 重置位置
	emaJgl.TbdAutoEmail.setposition();
};
//date: 2016-12-21 author: 杜关兴 note: 正则配置文件  other：配置统计全站所需要的正则表达式
/*
	regConfig.xxx  :调用
*/
emaJgl.regExpConfig={
	notnull:/^.+$/,                                                                    //不为空
    phone:/^1[34578][0-9]{9}$/,                                                   //手机号
	email:/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/,   //邮箱
	url:/(^(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$)|(^$)/,//有效网址
	hanzi:/^[\u4e00-\u9fa5]{0,}$/,                                                     //必须是汉字
	num:/^\d*$/,                                                                                     //数字
	ffzsnum:/^\\d+$/,　　                                                                            //非负整数（正整数 + 0）
	zzsnum:/^[0-9]*[1-9][0-9]*$/,　　                                                                //正整数
	fzsnum:/^((-\\d+)|(0+))$/,　　                                                                   //非正整数（负整数 + 0）
	fzsnum:/^-[0-9]*[1-9][0-9]*$/,　　                                                               //负整数
	zsnum:/^-?\\d+$/,　　　　                                                                        //整数
	fffdsnum:/^\\d+(\\.\\d+)?$/,　　                                                                 //非负浮点数（正浮点数 + 0）
	zfdsnum:/^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$/,　　 //正浮点数
	fzfdsnum:/^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$/,　　                                               //非正浮点数（负浮点数 + 0）
	ffdsnum:/^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/,  //负浮点数
	fdsnum:/^(-?\\d+)(\\.\\d+)?$/,　　                                                               //浮点数
	zimu:/^[A-Za-z]+$/,　　                                                               //由26个英文字母组成的字符串
	dxzimu:/^[A-Z]+$/,　　                                                                //由26个英文字母的大写组成的字符串
	xzimu:/^[a-z]+$/,　　                                                                 //由26个英文字母的小写组成的字符串
	zimunum:/^[A-Za-z0-9]+$/,　　                                                         //由数字和26个英文字母组成的字符串
	zimunum_:/^\\w+$/,　　                                                                //由数字、26个英文字母或者下划线组成的字符串 
	carded:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/                                  //身份证
};
//date: 2016- author:  note: 
/*
	
*/
